package com.mh.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.mh.dto.R;
import com.mh.dto.vo.GroupApplyHandleVo;
import com.mh.dto.vo.GroupIntoVo;
import com.mh.dto.vo.GroupUserDto;
import com.mh.pojo.GroupInfo;
import com.mh.pojo.GroupUser;

import java.util.List;

/**
 * 群组用户表(GroupUser)表服务接口
 *
 * @author zmh
 * @since 2024-09-02 17:22:06
 */
public interface GroupUserService extends IService<GroupUser> {

    /**
     * 分页查询
     *
     * @param page 查询页数
     * @param size 一页显示条数
     * @return ·
     */
    R<Page<GroupUser>> getAllByPage(int page, int size);

    /**
     * 添加group_user表记录
     * @param groupIntoVo VO：群组ID, 用户ID，状态
     * @return ·
     */
    R<String> groupInto(GroupIntoVo groupIntoVo);

    /**
     * 获取指定用户的群组的所有申请（获取主动申请）
     * @param userId 群主ID
     * @return ·
     */
    R<List<GroupUserDto>> getUserInfoOfApplyGroup(String userId);

    /**
     * 获取指定用户所有被邀请（群组）记录Dto
     * @param userId 用户ID
     * @return ·
     */
    R<List<GroupUserDto>> getBeInviteGroupInfo(String userId);

    /**
     * 群组申请的处理器
     * @param groupApplyHandleVo 群组ID,用户ID，处理操作（1-同意，3-拒绝）
     * @return ·
     */
    R<String> GroupApplyHandle(GroupApplyHandleVo groupApplyHandleVo);

    /**
     * 获取指定用户的群组信息列表
     * @param userId 用户ID
     * @return `
     */
    R<List<GroupInfo>> getGroupList(String userId);

    /**
     * 邀请用户加入群组
     * @param groupId 群组ID
     * @param email 用户邮箱地址
     * @return ·
     */
    R<String> inviteUserIntoGroup(String groupId, String email);
}

